{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import Normalizer\n",
    "from sklearn.cluster import KMeans \n",
    "from sklearn.metrics import silhouette_score\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = 'all'\n",
    "\n",
    "# 解决坐标轴刻度负号乱码 \n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "# 解决中文乱码问题 \n",
    "plt.rcParams['font.family'] = 'Heiti TC'\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Import Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      " #   Column            Non-Null Count  Dtype\n",
      "---  ------            --------------  -----\n",
      " 0   Channel           440 non-null    int64\n",
      " 1   Region            440 non-null    int64\n",
      " 2   Fresh             440 non-null    int64\n",
      " 3   Milk              440 non-null    int64\n",
      " 4   Grocery           440 non-null    int64\n",
      " 5   Frozen            440 non-null    int64\n",
      " 6   Detergents_Paper  440 non-null    int64\n",
      " 7   Delicassen        440 non-null    int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "data = pd.read_csv('Wholesale-customers-data.csv')\n",
    "data.info()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.322727</td>\n",
       "      <td>2.543182</td>\n",
       "      <td>12000.297727</td>\n",
       "      <td>5796.265909</td>\n",
       "      <td>7951.277273</td>\n",
       "      <td>3071.931818</td>\n",
       "      <td>2881.493182</td>\n",
       "      <td>1524.870455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.468052</td>\n",
       "      <td>0.774272</td>\n",
       "      <td>12647.328865</td>\n",
       "      <td>7380.377175</td>\n",
       "      <td>9503.162829</td>\n",
       "      <td>4854.673333</td>\n",
       "      <td>4767.854448</td>\n",
       "      <td>2820.105937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3127.750000</td>\n",
       "      <td>1533.000000</td>\n",
       "      <td>2153.000000</td>\n",
       "      <td>742.250000</td>\n",
       "      <td>256.750000</td>\n",
       "      <td>408.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8504.000000</td>\n",
       "      <td>3627.000000</td>\n",
       "      <td>4755.500000</td>\n",
       "      <td>1526.000000</td>\n",
       "      <td>816.500000</td>\n",
       "      <td>965.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>16933.750000</td>\n",
       "      <td>7190.250000</td>\n",
       "      <td>10655.750000</td>\n",
       "      <td>3554.250000</td>\n",
       "      <td>3922.000000</td>\n",
       "      <td>1820.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>112151.000000</td>\n",
       "      <td>73498.000000</td>\n",
       "      <td>92780.000000</td>\n",
       "      <td>60869.000000</td>\n",
       "      <td>40827.000000</td>\n",
       "      <td>47943.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Channel      Region          Fresh          Milk       Grocery  \\\n",
       "count  440.000000  440.000000     440.000000    440.000000    440.000000   \n",
       "mean     1.322727    2.543182   12000.297727   5796.265909   7951.277273   \n",
       "std      0.468052    0.774272   12647.328865   7380.377175   9503.162829   \n",
       "min      1.000000    1.000000       3.000000     55.000000      3.000000   \n",
       "25%      1.000000    2.000000    3127.750000   1533.000000   2153.000000   \n",
       "50%      1.000000    3.000000    8504.000000   3627.000000   4755.500000   \n",
       "75%      2.000000    3.000000   16933.750000   7190.250000  10655.750000   \n",
       "max      2.000000    3.000000  112151.000000  73498.000000  92780.000000   \n",
       "\n",
       "             Frozen  Detergents_Paper    Delicassen  \n",
       "count    440.000000        440.000000    440.000000  \n",
       "mean    3071.931818       2881.493182   1524.870455  \n",
       "std     4854.673333       4767.854448   2820.105937  \n",
       "min       25.000000          3.000000      3.000000  \n",
       "25%      742.250000        256.750000    408.250000  \n",
       "50%     1526.000000        816.500000    965.500000  \n",
       "75%     3554.250000       3922.000000   1820.250000  \n",
       "max    60869.000000      40827.000000  47943.000000  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fresh列到Delicassen列的数据数量级大小差别很大，在聚类前需要进行标准化\n",
    "\n",
    "- 关于标准化、归一化、Normalizer的总结\n",
    "\n",
    "一、数据标准化 StandardScaler (基于特征矩阵的列，将属性值转换至服从正态分布) 标准化是依照特征矩阵的列处理数据，其通过求z-score的方法，将样本的特征值转换到同一量纲下 常用与基于正态分布的算法，比如回归\n",
    "\n",
    "二、数据归一化 MinMaxScaler （区间缩放，基于最大最小值，将数据转换到0,1区间上的） 提升模型收敛速度，提升模型精度 常见用于神经网络\n",
    "\n",
    "三、Normalizer （基于矩阵的行，将样本向量转换为单位向量） 其目的在于样本向量在点乘运算或其他核函数计算相似性时，拥有统一的标准 常见用于文本分类和聚类、logistic回归中也会使用，有效防止过拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.70833271, 0.53987376, 0.42274083, 0.01196489, 0.14950522,\n",
       "        0.07480852],\n",
       "       [0.44219826, 0.61470384, 0.59953989, 0.11040858, 0.20634248,\n",
       "        0.11128583],\n",
       "       [0.39655169, 0.5497918 , 0.47963217, 0.15011913, 0.2194673 ,\n",
       "        0.48961931],\n",
       "       ...,\n",
       "       [0.36446153, 0.38846468, 0.7585445 , 0.01096068, 0.37223685,\n",
       "        0.04682745],\n",
       "       [0.93773743, 0.1805304 , 0.20340427, 0.09459392, 0.01531   ,\n",
       "        0.19365326],\n",
       "       [0.67229603, 0.40960124, 0.60547651, 0.01567967, 0.11506466,\n",
       "        0.01254374]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normalizer = Normalizer()\n",
    "data_normalized = normalizer.fit_transform(data.iloc[:, 2:])\n",
    "data_normalized\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Find best # of clusters with silhouette_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "scores = list()\n",
    "\n",
    "for i in range(2, 6):\n",
    "    cluster = KMeans(n_clusters=i, random_state=98).fit(data_normalized)\n",
    "    scores.append(silhouette_score(data_normalized, cluster.labels_))\n",
    "    \n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(range(2, 6), scores)\n",
    "plt.xlabel('k')\n",
    "plt.ylabel('silhouette score')\n",
    "plt.show();\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Modeling & Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cluster_label</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.906159</td>\n",
       "      <td>0.173178</td>\n",
       "      <td>0.226486</td>\n",
       "      <td>0.150206</td>\n",
       "      <td>0.049162</td>\n",
       "      <td>0.072951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.260738</td>\n",
       "      <td>0.488000</td>\n",
       "      <td>0.680049</td>\n",
       "      <td>0.096029</td>\n",
       "      <td>0.267457</td>\n",
       "      <td>0.098612</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.575088</td>\n",
       "      <td>0.233245</td>\n",
       "      <td>0.279252</td>\n",
       "      <td>0.625425</td>\n",
       "      <td>0.053748</td>\n",
       "      <td>0.109052</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Fresh      Milk   Grocery    Frozen  Detergents_Paper  \\\n",
       "cluster_label                                                             \n",
       "0              0.906159  0.173178  0.226486  0.150206          0.049162   \n",
       "1              0.260738  0.488000  0.680049  0.096029          0.267457   \n",
       "2              0.575088  0.233245  0.279252  0.625425          0.053748   \n",
       "\n",
       "               Delicassen  \n",
       "cluster_label              \n",
       "0                0.072951  \n",
       "1                0.098612  \n",
       "2                0.109052  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# average metrics of each cluster\n",
    "\n",
    "n_clusters = 3\n",
    "cluster = KMeans(n_clusters=n_clusters, random_state=98).fit(data_normalized)\n",
    "cluster_result = pd.DataFrame(data_normalized, columns=data.columns[2:])\n",
    "cluster_result['cluster_label'] = cluster.labels_\n",
    "cluster_result.groupby(['cluster_label']).mean()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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0tLi+fznPz9pzpw570+dOrVny5Yt3tNOO23K5MmTuwGWL1+e+9vf/nb1jBkzujo6Oqzzzz9/st/v7ykuLu774Q9/OK60tLQXYMuWLRk33njj+HPPPbdl22u/8MILo1599dXlsViM4RYgqATFlGBkHjCPoO+bwKeJF+LH0S73brEaeBiYTTCy2HSYdDNlypTuuXPnFgJb9nSc1+u1Y7HY9n/v7Oy0AM4444z25cuXt5x33nmTbrrppoaKiopd1ladN29ewZtvvrnM5/PFIH7+0ePx8MADDxSfdNJJey3fhQsX5kydOrVj6tSpPQAlJSV9F110UVNPT48FMH369PYZM2Z0QXwEW1NTs/nFF18sLC0tjX71q19tuOmmmzZte63Vq1dn5ubmbi+7Rx555IOvfOUr44855pj27373u5s+/N77SucExaxgpJNgZDbByOnEzx0GgTqjmSRZtgL/C3wMmEQwcpMKcP9cccUVW+fPn5/3i1/8orSvLz4j2d3dbd1www2Vs2fP3j6zMmHChN6lS5fm9vX10dnZaT3yyCMlAFu2bPFefvnlW++88851X/va1wZcQDNjxoy2m2++uRLi5x+vuuqqiQ899FAxQE5OTuzDx3/YEUcc0bVkyZK8JUuWZAE0NTV55syZs/3Cmfnz5xfMmzcvF6Ctrc2aNWtW6amnnto6c+bMtvvvv79s06ZNXoBHH33Ud+mll07a+bWLior6HnvssbqnnnqqePHixcNevlEjQUkdwUgd8COCvluAU4mPDi8Eck3GkmHpAp4GZgP/RzDSYziPI2RmZvLyyy+/993vfrfyqKOOOsSyLPr6+qyzzz67+aKLLmp57rnnCgAOO+yw7lNPPbXl0EMPnVpWVtZ7+OGHdwIsXLgw+/rrr58QiUS83/rWtzYAHH744Z0///nPK0866aT2e+65Z90111wzftq0aYd2d3db559//tavfe1rW371q1+V7C7T9773vXE/+9nPKgHmzp27/L777qu76qqr/D09PZ7i4uLo9OnTO7YdO3Xq1I677rqr/L333tt+TvDCCy9sAbjuuusaTj311IMARo8eHX300Uc/2Pa8aDTKtddeO37VqlXZEydO7D7ooIO6h/u91IoxktqCPh9wPlANnIHOH6aDGPG1PP8E/K3/XLAMw4IFC+qmT5+uHTGGYMGCBaXTp0/3D/V4jQRltyzLqgSWAEUAtm2P/Pm6+A/QB4AHCPoyiC/NVt3/ceiI55HdaSdefM8CjxGMrDecR2RIVIKyJ+OJrwl6Nqmw+kswEiW+LNtc4AaCvknsKMRT0fZOIylG/KrOZ4HngNc01SnpSCUou2Xb9pvAm5ZllZIKJfhhwcgq4G7gboK+POA0dpTiOJPRHGo18cJ7FvgXwUiT4Twiw6YSFGcIRjqAv/d/QNB3KPEtno4FPkJ8CbcsU/HSVAvwItuKLxjZ471hIulIJSjOFIwsBZYC98f/3ZcNHEm8EI/t/zgI3Ze4TTswH3gHeLv/YznByF4vhxdJZypBcYdgpBuY1//R/zWfD5jBjlKcAYzF+cW4DggDi/o//wdYpsWpxY1UguJe8StP/9X/0f81Xy7gBybt5qNohFPujx7i63CuJ15464H32VZ8wUizuWjiVt3d3dYXvvCF8fPnz8/PyMiwb7vttrWnn356u+lcKkGRnQUjncSnUZcO/riviIHFWAkUfuijoP9zZgLTRYlPW9azo9y2fd75nzcRjOgGYNkjfyB0TCJfr662+p09Pf673/1utGVZLFq0aOmqVasyP/nJT05ZsGDB0uzsbKN/V1WCIvsiPop6t/9jCMf7shlYkNtKsg/o/tBH1yBfi39d5+ckjT3//POjAoFAA8CkSZN6p02b1vHGG2/knnzyyR17e24yqQRFkil+LrIb0Gof4mpNTU0ZY8eOjW7794qKit76+vpEzpTsFy2gLSIiSTd69Ojoxo0btw+8Nm7cmFlVVWV86yyVoIiIJN3pp5/e8vvf/74E4tsjLVq0KO/444/v3Nvzkk0lKCIiSXfNNdc0dXR0eKZNm3boBRdccMDdd9+92vRFMaBzgjIEtm0Hie/zJyKyX7Kzs+3Zs2evMZ3jw1SCIiIutLdbGtxC06EiIuJaKkEREXEtlaCIiLiWSlBERFxLJSgiIq6lEhQRkRFx3333FVdUVBwxa9asYtNZttEtEiIibhT0JXQXCYKRvd5ycfXVV29dsmRJbkLfd5g0EhQREddSCYqIiGupBEVExLVUgiIi4loqQRERcS1dHSoiIiPmjjvuqDedYWcqQRERNxrCLQ1uoOlQERFxLZWgiIi4lkpQRERcSyUoIiKupRIUERHXUgmKiEjS9fb2cumll06cPn36IdOmTTv08ccfH2U6E+gWCRERV5r2wLSE7iIRrgnv8ZaL2267rayysrL3kUceWb1hw4aME0888eDzzjtvsdfrTWSMfaYSFBGRpDvqqKM6DzvssK0AlZWV0ezsbLu3t9fyer22yVwqQRERSbqzzjqrbds/33zzzWNOO+20SE5OjtECBJWgiIiMoJ/+9KdlCxcuzH3iiSdWmc4CKkERERkhtbW1Za+++mrhE0888YHpc4Hb6OpQERFJup/97GdlN91004TVq1dnz5gx45Dp06cfEg6Hs03n0khQRESS7sYbb9x04403bjKd48NUgiIiLrS3WxrcQtOhIiLiWipBERFxLZWgiEjqi8ViMct0iFTX/z2K7ctzVIIiIqlv0aZNm3wqwt2LxWLWpk2bfMCifXmeLowREUlx0Wj06oaGhvsaGhoOR4OX3YkBi6LR6NX78iTLto2vWiMiImKEfqMQERHXUgmKiIhrqQRFRMS1VIIiIuJaKkEREXEtlaCIiLiWSlBERFxLJSgiIq6lEhQREddSCYqIiGv9PyYPoBWbOZNEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# cluster_label percentage chart\n",
    "\n",
    "plt.figure(figsize=(10, 8))\n",
    "plt.pie(cluster_result.cluster_label.value_counts().values,\n",
    "        radius=1,\n",
    "        autopct='%0.2f%%',\n",
    "        pctdistance=0.65,\n",
    "        labels = [0, 1, 2],\n",
    "        textprops={'fontsize': 18})\n",
    "plt.legend([0, 1, 2], title='Cluster Labels')\n",
    "plt.show();\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='cluster_label'>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "(array([0, 1, 2]), [Text(0, 0, '0'), Text(1, 0, '1'), Text(2, 0, '2')])"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Cluster Labels')"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAHqCAYAAAAkmRv1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqwklEQVR4nO3deXTV9Z3w8feHfYpYNxR38IjAM1IVQhNhwK1qVewytUjxVBmsCxatKKO2UtyqwgDuSqtFacUdrT5FK/URWWwVRFt1LBWRwapVy6YViQLh+/xxL5mAgeCXkITwfp2TI/fe3/K9Nznxnd8aKSUkSZL0xTSp7wFIkiRtjYwoSZKkDEaUJElSBiNKkiQpgxElSZKUwYiSJEnK0KyuV7jLLruk9u3b1/VqJUmSvrAXX3xxcUqpbXWv1XlEtW/fnjlz5tT1aiVJkr6wiHhrQ6+5O0+SJCmDESVJkpTBiJIkScpQ58dESZK0tVi1ahXvvPMOn376aX0PRVtYq1at2GuvvWjevPkmz2NESZK0Ae+88w5t2rShffv2RER9D0dbSEqJJUuW8M4779ChQ4dNns/deZIkbcCnn37KzjvvbEA1chHBzjvv/IW3OBpRkiRthAG1bcj5PhtRkiQ1YNOmTaNdu3aUlZVRVlbGvffem7WcAw88sJZHJo+JkiRpE7W/5PFaXd7CkSds0nQnnXQSt9xyS62uW5vPLVGSJG1FOnfuTN++fbnxxhupqKjg6quv5thjj6V3794MGDCAefPm8emnn3LsscdSUlLCj3/848p5r7nmGg477DAOOugg/vSnP9Xju2gc3BIlSVIDN2nSpMpbpi1YsIDx48fTq1cvRo8ezf3330/r1q0BeOONN7j00ku57rrrKC8vZ/bs2Xz44YcALF++nD333JPp06fz+uuvc8YZZzBjxoz6ekuNghElSVIDV3V3XseOHenZsycAM2fO5L777qs83mn16tUsW7aMtm3bctFFFzFgwADOOussjjjiCFq0aMGpp54KQKdOnVi2bFn9vJlGxN15kiRtRVq2bFl5JlmvXr0YNWoUFRUVpJQYMWIE48aNY+XKlZSWljJhwgTOPvtsAFq0aLHOGWgppXoZf2NiREmStJUaNmwYe+yxB6WlpRx88MEsX76cn/zkJ7z99tv069eP7t27M2jQoPoeZqMVdV2iJSUlae1+XUmSGrK5c+fSpUuXysf1dXae6sb632+AiHgxpVRS3fQeEyVJ0iYyelSVu/MkSZIyGFGSJEkZjChJkqQMHhO1iTb3YEL3o0uS1Li4JUqSJCmDESVJUgP2s5/9jI8//vhzz19yySW89tprXHLJJSxcuJC+ffsyYcIExowZUw+j3Da5O0+SpE11+ZdreXkf1TjJH//4R9asWcOIESMqn3vssce4++67GTlyJCNHjmThwoW1Oy5tErdESZLUgP3jH//g8ccfr7zXXUqJUaNG0aZNG/77v/+bvn37fm6eJUuWcNxxx1Xeb09bhhElSVIDtXLlSpo1a8bQoUMZPXo0AA8++CC9e/emtLSUVatWfW6eV199lRNPPJHhw4czZMiQuh7yNsWIkiSpgXrzzTfp0KEDJ598MtOmTeO9995j7NixXHTRRXTs2JEpU6Z8bp67776bH/7wh/Tq1aseRrxtMaIkSWqg5s2bR8eOHYkILr74Yo466iiOO+44dt55Zzp27MjKlSs/N88ll1zCxIkT+fnPf14PI962GFGSJDVQ8+bNY//99wfgm9/8Jvvssw8XXHABAB07dmTevHmfm2ennXbit7/9La+99hpDhgxh9erVdTrmbYln50mS1ED953/+5zqPn3zyycp/d+vWjYkTJ1Y+njx58jrT3nzzzVt2cDKiJEnaZJtwSQJtO9ydJ0mSlMGIkiRJymBESZIkZTCiJEmSMhhRkiRJGYwoSZIasBUrVnDxxRdz8MEHU1JSwr/+678yePBg3n777foe2jbPSxxIkrSJuv6qa60u79XTXt3o6xUVFRx//PF84xvfYPbs2bRo0QKARx99lEmTJjF06NBaHY++GLdESZLUQD322GN07dqVCy64oDKgAL71rW8xdOhQOnfuTN++fbnxxhtZs2YNP/3pT+nRowelpaWcdtppfPjhhwD87W9/46STTqJXr14cdNBBDBkyhPLycgDGjRvH8ccfz7/927/xne98h1mzZrFw4UI6d+5Mz549mTlzJv/+7/9eue6nn36aH/zgB3X6OTRURpQkSQ3U66+/Tvfu3dd57sgjj6SsrIwDDjiA119/nR//+Mf86Ec/4rrrrqO8vJxZs2Yxa9Ysvva1rzF48GAABgwYwLBhw/jDH/7Ayy+/zBFHHMF7773HQw89xPXXX8/SpUtZvXo17777Lueffz4AixYtYsqUKfTu3ZtVq1bxl7/8BYCxY8cybNiwOv0cGiojSpKkBqpLly5MnTp1neemTp3Kc889R9OmTWnfvj09e/YEYMaMGZxzzjk0aVL4X/v3v/99XnnlFZYuXUqTJk0oKyurXMZ3vvMd9ttvP2bOnMl1113H888/X/n1yCOPAHDIIYfQpk0bAC666CJGjRrFK6+8QsuWLencuXNdvP0Gz4iSJKmB+sY3vsHbb7/NlVdeycqVKwFYuXIlw4YNo1u3brRu3ZqIAKBPnz6MHz+elBIADz74IF/5ylfYaaedWLFiBTNnzqxc7qRJk1i4cCG9evXi+uuvr9y194tf/IJLL70UgFatWlVO37t3b9566y0uuOCCz93Pb1tmREmS1EA1adKEJ554gvLycrp370737t3p1q0bEcH48ePXmfaCCy4gIigtLaWsrIzJkyczbtw4oBBUo0ePprS0lIMPPpipU6ey6667cvLJJ1ceD9WtWzemT5++wRsXDx48mM8++6xyy5cg1hZrXSkpKUlz5syp03XWhvaXPL5Z8y8ceUItjUSSVFfmzp1Lly5dKh/X9dl5Dcn555/PUUcdxYknnljfQ9li1v9+A0TEiymlkuqm9xIHkiRtoq0pemrTsmXLeO6557j++uvreygNihElSZI2ascdd2TWrFn1PYwGx2OiJEmSMhhRkiRJGYwoSZKkDEaUJElSBiNKkqQGbNq0abRr146ysjLKysq4995763tIKvLsPEmSNtHczl1qnugL6PLXuZs03UknncQtt9xSq+vW5nNLlCRJW5HOnTvTt29fbrzxRtasWcNPf/pTevToQWlpKaeddhoffvghU6ZMqdxy1aJFC5588kk++eQTLr74Yr72ta/Ru3dvBg0axAcffABAp06duPDCC+nduzdlZWW89dZb9fwutw5uiZIkqYGbNGkSa+/2sWDBAsaPH0+vXr0YM2YM5eXlzJo1iyZNmnD33XczePBg7rvvPo499lh++9vf8sgjj/D1r3+dIUOG8Nxzz9G8eXMA/vSnPzFy5Eiuv/563njjDfr27cvYsWP53e9+x/Dhw7n77rvr8y1vFYwoSZIauKq78zp27Fh5/7oZM2Zwww030KRJYcfS97//fUaOHAnAhx9+yBVXXMFTTz0FwMyZM/nDH/7AdtttB8DHH39cefPi/fbbjyOOOAKA7t27M2bMmLp7c1sxd+dJkrQVadmyZWX89OnTh/Hjx7P2PrgPPvggX/nKVwAYOnQow4cPZ8cddwSgZ8+eXHPNNQCsXr2ac845h0ceeQSAVq1aVS6/SZMmVFRU1Nn72ZoZUZIkbaUuuOACIoLS0lLKysqYPHky48aNY8qUKdxzzz2MHDmSsrIyxo4dy+jRo1m0aBFf/epX6datG506deLUU0+t77ewVYu19VpXSkpK0tr9uluT9pc8vlnzLxx5Qi2NRJJUV+bOnUuXLv97Rl59nZ2nurH+9xsgIl5MKZVUN73HREmStImMHlXl7jxJkqQMRpQkSVIGI0qSJCmDESVJkpTBiJIkScqw0YiKiOYRcVtEvBARz0XEoeu9flVE/Kn4+hlbdqiSJG17pk2bRrt27SgtLaWkpITDDz+cqVOn1jjf4YcfzuLFi+tghNWbNm0aQ4YM2eTpJ0yYwL777kvPnj056KCDGDt27BYcXe2o6RIHpwAppdQjIvYEHo+IHimlVRHRGvgW0KM47YsRcX9K6eMtOF5JkurNrWfXHC9fxA9/fuQmTVf1ti/z58/n1FNP5aqrruKoo46q1fHUt3PPPZdhw4axZs0a+vTpw/e+9z322GOP+h7WBtUUUUcDowFSSu9GxEvAwcALKaVPImIK8A9gDfA2sHwLjlWSpG3e/vvvzwMPPEC/fv1o374911xzDfPnz6dp06b06tWLyy67jEsvvZSXXnqJr3/96zz88MOsXr262ul+8IMf8O6777LHHnvwq1/9ikmTJjF69GiaN29Ohw4deP/997n22ms55JBDGDlyJDNmzGDFihXsvffeXH755RxwwAEceOCBDBgwgClTpvDRRx9x1113sd1223HOOeewdOlSdtxxRw466CCuuOIK2rRpw1133UWnTp02+h5XrFjBJ598QvPmzVmzZg0jRozg97//PS1btqRPnz7cd999LFiwgIEDB7Lvvvsyffp0PvvsM9q1a8fNN9/MXnvtxT/+8Q+uvPJKXnvtNdasWcNBBx3Etddey+jRo5k6dSrbb789v/nNbypvyJyjpojaBfigyuP3gd0AIqIU+CqwF4WIOgVoAXyWPRpJklSjvffem48++oj+/fvTtGnTyucffvhhunbtyqhRo5g1axaTJk1il112oUePHtVOB4Xdfpdeeilz5szhpptuYsqUKeywww7Mmzev8kbH1113Hffffz+tW7cG4I033uDSSy/loYceYvny5ey5555Mnz6duXPnctZZZzFjxgxuu+02Jk2axFVXXcUZZ5zBmDFjKCsrq7wBcnVuvvlmHnnkESKCCy+8kLZt2zJmzBhWrVrFrFmziAgefPBBbrrppsp5PvjgA55++mmaNm3KtGnTOOWUU5g+fTpnnnkmf//73ytvzjxt2jR+8YtfANCpUyfuuOOOzf4+1BRRiymE1HvFx+3436g6DLgzpfRPgIj4DBgI/GL9hUTEmcCZAPvss89mD1qSpG3Z4sWLKS8v50tf+hLPP/985fMffPABu+666zrTLl26lJRStdM98cQTHHbYYQDMmDGDgQMHssMOOwBwwAEHVL42c+ZM7rvvPg488ECgcAPjZcuWAdCiRYvKe/B16dKFpUuXfm68//Vf/8VVV13F73//e66++up1gq6qtbvzqpoxYwY33HBD5U2X+/Xrt840p59+euXyDj/8cJYvX85nn33GK6+8woIFCyqnW7JkCW3atOGaa66pfF+bq6az856iEEZExO7AIcCfi6+9DBwVBU2BE4B/VreQlNLtKaWSlFJJ27Zta2PckiRtkxYvXsygQYMYPnw45eXlTJkyBShEwvHHH8/8+fPXmX6nnXba6HStWrUCoGfPnjz88MOUl5cDsHDhQp599lkigl69ejFq1CgqKipIKTFixAjGjRsHFCJqbeBsyCeffMJ1113HDjvswD333POF3m+fPn24/fbbWbNmDQCPPPJIZcAB3HnnnVRUVAAwffp02rRpQ8uWLenUqRO33347UNg9ePLJJ/Pcc8+t8543V01bou4BboqI2cAqYDDQPyKap5TuLJ6t90JxOVOBB2plVJIkqdKkSZN44YUXWLNmDRUVFQwaNIjTTz+dPn36cN555zFixAhWrVrFFVdcQceOHQE45JBDGDhwIJMnT+bRRx/d4HRrlZWV0b9/f/r06UOrVq3Yd999OeCAA2jVqhXDhg3jJz/5CaWlpaxatYrDDjuMK6+8cqNj7tChA08//TSTJ0/mpZdeYvLkyUBhV+IXMXToUIYPH06PHj3YfvvtOeqoo9bZ2rb33ntz7LHHsnz5cnbbbTcmTpwIFM72GzJkCOPHj+fTTz/l3HPP5bDDDuOZZ575QuvfmEgp1drCNkVJSUmaM2dOna6zNrS/5PHNmn/hyBNqaSSSpLoyd+5cunTpUvm4vs7Oqwuvvvoq48aN46abbqJZs2a8//77HHPMMcyePbvWttzUtoEDBzJkyBBKSkpqZXnrf78BIuLFlFK1K6hpS5QkSSpqSNFT27p27Urnzp0pLS2lVatWNGnShHHjxtV6QL333nt8+9vfXue53Xffnd/85je1up66YERJkiQAzjvvPM4777wtuo7dd999nYPcN8eECRNqZTm5vO2LJElSBiNKkiQpgxElSZKUwYiSJEnK4IHlkiQ1YNOmTaN///7su+++VFRUsN122zFixAiOPHLDZwpOmDCBxYsXs+eee5JSYsCAAXU44m2HESVJ0iYae3LfWl3ehQ9M3qTpTjrpJG655RYA5s+fz6mnnspVV13FUUcdtdH5vve97232GLVhRpQkSVuR/fffnwceeIB+/frRvn17rrnmGubPn0/Tpk3p1asXl112WeW0a7dIDRs2jMcee4zRo0ezatUq1qxZw7Bhwzj55JNZvHgx5513Hv/zP/9Ds2bNOProo5k9ezaTJk3im9/8JkuWLOHoo4/msssuW+fxtddey5tvvlnt+p999lluvfVWIoK33nqLffbZh4kTJ9KyZct6/ORqnxElSdJWZu+99+ajjz6if//+69zM9+GHH6Zr166fm/7FF1/k1ltv5YknnmD77bdn+fLl3HPPPaSUGDRoEGeccQYnnngiFRUVnH/++QAsWrSI8vJyZs+ezYcffvi5x8AG17/rrrvyxz/+kTlz5rD77rtz8cUXM3HiRE4//fQt+rnUNQ8slyRpK7N48WLKy8tJKfH8889Xfj3zzDN897vf/dz006dPp3///my//fYAbLfddpx11llEBAsWLODEE08EoGnTppxxxhlAIdQuuugiBgwYwMsvv/y5x0uXLt3o+o877jh23313ALp3787f//73uvho6pQRJUnSVmTx4sUMGjSI4cOHU15ezpQpUwBYsmQJxx9/PPPnz//cPD179mTChAmVW5A+/vhj7rjjDlJK7LfffpU3B16zZg133XUXACtXrqS0tJQJEyZw9tlnf+7xTjvttNH1V71dTJMmTaioqNhin0l9MaIkSWrgJk2aRGlpKT169OCYY47hmGOO4fTTT+fRRx/lhhtuoLS0lKOPPprLL7+cjh07fm7+srIyhgwZwrHHHkuPHj048sgjad26NRHBL3/5S379619XLmPt1qO3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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# features distribution in each cluster\n",
    "\n",
    "cluster_result.groupby(['cluster_label']).mean().plot(figsize=(10, 8), kind='bar')\n",
    "plt.xticks(rotation=0, fontsize=14)\n",
    "plt.xlabel('Cluster Labels', fontsize=18)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
